const path = require('path');

// 在Electron打包应用中，依赖可能无法被正确找到。
// 这个函数尝试用标准 `require` 加载模块，如果失败，
// 它会尝试一个基于打包后应用结构的备用路径。
function customRequire(moduleName) {
    try {
        // 1. 尝试标准 require，适用于开发环境和某些打包场景
        return require(moduleName);
    } catch (e1) {
        // 2. 如果标准 require 失败，则为打包后的 Electron 应用构建备用路径
        // process.resourcesPath 指向应用根目录下的 resources 文件夹
        const packagedPath = path.join(process.resourcesPath, 'app', 'node_modules', moduleName);
        console.log(`标准 require 失败，尝试从打包路径加载: ${packagedPath}`);
        try {
            return require(packagedPath);
        } catch (e2) {
            // 如果两种方法都失败，则抛出原始错误，因为它更有可能描述根本问题
            console.error(`从打包路径加载失败: ${e2.message}`);
            throw e1;
        }
    }
}

module.exports = { customRequire };